#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class QPushButton;
class QLabel;

class ArrayListWindow;
class LinkedListWindow;
class ArrayStackWindow;
class BinaryTreeWindow;
class CompleteBinaryTreeWindow;
class BSTWindow;
class HuffmanTreeWindow;
class AVLTreeWindow;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void showArrayListWindow();
    void showLinkedListWindow();
    void showArrayStackWindow();
    void showBinaryTreeSelection();
    void showLinkedBinaryTreeWindow();
    void showSequentialBinaryTreeWindow();
    void showBSTWindow();
    void showHuffmanTreeWindow();
    void showAVLTreeWindow();
    void onChildWindowClosed();

private:
    void setupUI();

    QPushButton *m_arrayListBtn;
    QPushButton *m_linkedListBtn;
    QPushButton *m_arrayStackBtn;
    QPushButton *m_binaryTreeBtn;
    QPushButton *m_bstBtn;
    QPushButton *m_huffmanTreeBtn;
    QPushButton *m_avlTreeBtn;
};

#endif // MAINWINDOW_H
